package com.itheima.admin.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * @Author Chen Lingzhen
 * @Date 2022/7/24 20:41
 * @Version 1.0
 */

@Component   //  方法都是非静态的 ,都需要对象来调用 ,所以需要放到ioc容器中创建对象
public class MyMetaObjectHandle implements MetaObjectHandler {
    //第一种获取当前操作用户信息的值   ,因为之前已经存了当前用户信息到session域对象中 key为employee
//    @Autowired
//    private HttpSession session ;

//    采用第二种   ThreadLocal的方法

    public static void main(String[] args) {
        System.out.println("LocalDateTime.now() = " + LocalDateTime.now());
        System.out.println("new Date() = " + new Date());
    }
    //元数据对象处理器
    @Override
    public void insertFill(MetaObject metaObject) {

        System.out.println("执行元数据对象处理器...进行自动填充");
        //配置元数据值                            使用ThradLocal  里面之前存的employee的id
//        metaObject.setValue("createdUser",BaseContext.getCurrentId());
        metaObject.setValue("createdTime",LocalDateTime.now());     //!!!!!注意时间格式是和实体类对应的!!!!,
                                                               // mybatis会自动和数据库的时间格式进行转换
//        metaObject.setValue("updatedUser",BaseContext.getCurrentId());
//        metaObject.setValue("updatedTime", new Date());
        //填充方式二  setFieldValByName("createdTime",new Date(),metaObject);
    }

    @Override                               //元对象
    public void updateFill(MetaObject metaObject) {
        //配置元数据值
//        metaObject.setValue("updatedUser",BaseContext.getCurrentId());
//        metaObject.setValue("updatedTime", LocalDateTime.now());
    }

}
